home *** CD-ROM | disk | FTP | other *** search
- Path: xanth!nic.MR.NET!hal!ncoast!allbery
- From: jef@helios.ee.lbl.gov (Jef Poskanzer)
- Newsgroups: comp.sources.misc
- Subject: v05i045: portable bitmap routines (5 of 5)
- Message-ID: <8811010237.AA02702@helios.ee.lbl.gov>
- Date: 9 Nov 88 02:41:24 GMT
- Sender: allbery@ncoast.UUCP
- Reply-To: jef@helios.ee.lbl.gov (Jef Poskanzer)
- Lines: 354
- Approved: allbery@ncoast.UUCP
-
- Posting-number: Volume 5, Issue 45
- Submitted-by: "Jef Poskanzer" <jef@helios.ee.lbl.gov>
- Archive-name: pbm3/Part5
-
- #! /bin/sh
- # This is a shell archive, meaning:
- # 1. Remove everything above the #! /bin/sh line.
- # 2. Save the resulting text in a file.
- # 3. Execute the file with /bin/sh (not csh) to create the files:
- # pbm.h
- # libpbm.h
- # macp.h
- # x10wd.h
- # x11wd.h
- # pbm.5
- # bmaliases
- # bitreverse.h
- # This archive created: Mon Oct 31 18:33:41 1988
- # By: Jef Poskanzer (Paratheo-Anametamystikhood Of Eris Esoteric, Ada Lovelace Cabal)
- export PATH; PATH=/bin:$PATH
- echo shar: extracting "'pbm.h'" '(480 characters)'
- if test -f 'pbm.h'
- then
- echo shar: will not over-write existing file "'pbm.h'"
- else
- sed 's/^X//' << \SHAR_EOF > 'pbm.h'
- X/* pbm.h - header file for libpbm portable bitmap library
- X*/
- X
- Xtypedef unsigned char bit;
- X
- X/* Declarations of routines. */
- X
- Xbit **pbm_allocarray( );
- X /* bits = pbm_allocarray( cols, rows ); bits[row][col]; */
- X
- Xbit **pbm_readpbm( );
- X /* bits = pbm_readpbm( file, &cols, &rows ); */
- Xpbm_writepbm( );
- X /* pbm_writepbm( file, bits, cols, rows ); */
- X
- Xbit **pbm_readcbm( );
- X /* bits = pbm_readcbm( file, &cols, &rows ); */
- Xpbm_writecbm( );
- X /* pbm_writecbm( file, bits, cols, rows ); */
- SHAR_EOF
- if test 480 -ne "`wc -c < 'pbm.h'`"
- then
- echo shar: error transmitting "'pbm.h'" '(should have been 480 characters)'
- fi
- fi # end of overwriting check
- echo shar: extracting "'libpbm.h'" '(382 characters)'
- if test -f 'libpbm.h'
- then
- echo shar: will not over-write existing file "'libpbm.h'"
- else
- sed 's/^X//' << \SHAR_EOF > 'libpbm.h'
- X/* libpbm.h - internal header file for libpbm portable bitmap library
- X*/
- X
- X#define PBM_MAGIC1 'P'
- X#define PBM_MAGIC2 '1'
- X
- X#define CBM_MAGIC1 42
- X#define OCBM_MAGIC2 23
- X#define NCBM_MAGIC2 24
- X
- X#define VERSION_OLDCBM 1
- X#define VERSION_RUNLEN 2
- X
- X#define DEFAULT_BITSPERCOUNT 8
- X#define MAX_BITSPERCOUNT 12
- X#define MAX_MAXCOUNT 8191
- X
- X#define DEFAULT_REPEATBITS 2
- X#define MAX_REPEATBITS 32
- SHAR_EOF
- if test 382 -ne "`wc -c < 'libpbm.h'`"
- then
- echo shar: error transmitting "'libpbm.h'" '(should have been 382 characters)'
- fi
- fi # end of overwriting check
- echo shar: extracting "'macp.h'" '(161 characters)'
- if test -f 'macp.h'
- then
- echo shar: will not over-write existing file "'macp.h'"
- else
- sed 's/^X//' << \SHAR_EOF > 'macp.h'
- X/* macp.h - header file for MacPaint files
- X*/
- X
- X#define HEADER_LENGTH 512
- X#define MAX_LINES 720
- X#define BYTES_WIDE 72
- X#define MAX_COLS 576 /* = BYTES_WIDE * 8 */
- SHAR_EOF
- if test 161 -ne "`wc -c < 'macp.h'`"
- then
- echo shar: error transmitting "'macp.h'" '(should have been 161 characters)'
- fi
- fi # end of overwriting check
- echo shar: extracting "'x10wd.h'" '(952 characters)'
- if test -f 'x10wd.h'
- then
- echo shar: will not over-write existing file "'x10wd.h'"
- else
- sed 's/^X//' << \SHAR_EOF > 'x10wd.h'
- X/* x10wd.h - the following defs are taken from various X10 header files
- X*/
- X
- X#define XYFormat 0
- X#define ZFormat 1
- X
- X#define X10WD_FILE_VERSION 6
- Xtypedef struct {
- X int header_size; /* Size of the entire file header (bytes). */
- X int file_version; /* X10WD_FILE_VERSION */
- X int display_type; /* Display type. */
- X int display_planes; /* Number of display planes. */
- X int pixmap_format; /* Pixmap format. */
- X int pixmap_width; /* Pixmap width. */
- X int pixmap_height; /* Pixmap height. */
- X short window_width; /* Window width. */
- X short window_height; /* Window height. */
- X short window_x; /* Window upper left X coordinate. */
- X short window_y; /* Window upper left Y coordinate. */
- X short window_bdrwidth; /* Window border width. */
- X short window_ncolors; /* number of Color entries in this window */
- X } X10WDFileHeader;
- X
- Xtypedef struct {
- X int pixel;
- X unsigned short red, green, blue;
- X } X10Color;
- SHAR_EOF
- if test 952 -ne "`wc -c < 'x10wd.h'`"
- then
- echo shar: error transmitting "'x10wd.h'" '(should have been 952 characters)'
- fi
- fi # end of overwriting check
- echo shar: extracting "'x11wd.h'" '(1692 characters)'
- if test -f 'x11wd.h'
- then
- echo shar: will not over-write existing file "'x11wd.h'"
- else
- sed 's/^X//' << \SHAR_EOF > 'x11wd.h'
- X/* x11wd.h - the following defs are taken from various X.V11R2 header files
- X*/
- X
- X#define LSBFirst 0
- X#define MSBFirst 1
- X
- X#define XYBitmap 0
- X#define XYPixmap 1
- X#define ZPixmap 2
- X
- Xtypedef unsigned long xwdval;
- X#define X11WD_FILE_VERSION 7
- Xtypedef struct {
- X xwdval header_size; /* Size of the entire file header (bytes). */
- X xwdval file_version; /* X11WD_FILE_VERSION */
- X xwdval pixmap_format; /* Pixmap format */
- X xwdval pixmap_depth; /* Pixmap depth */
- X xwdval pixmap_width; /* Pixmap width */
- X xwdval pixmap_height; /* Pixmap height */
- X xwdval xoffset; /* Bitmap x offset */
- X xwdval byte_order; /* MSBFirst, LSBFirst */
- X xwdval bitmap_unit; /* Bitmap unit */
- X xwdval bitmap_bit_order; /* MSBFirst, LSBFirst */
- X xwdval bitmap_pad; /* Bitmap scanline pad */
- X xwdval bits_per_pixel; /* Bits per pixel */
- X xwdval bytes_per_line; /* Bytes per scanline */
- X xwdval visual_class; /* Class of colormap */
- X xwdval red_mask; /* Z red mask */
- X xwdval green_mask; /* Z green mask */
- X xwdval blue_mask; /* Z blue mask */
- X xwdval bits_per_rgb; /* Log base 2 of distinct color values */
- X xwdval colormap_entries; /* Number of entries in colormap */
- X xwdval ncolors; /* Number of Color structures */
- X xwdval window_width; /* Window width */
- X xwdval window_height; /* Window height */
- X long window_x; /* Window upper left X coordinate */
- X long window_y; /* Window upper left Y coordinate */
- X xwdval window_bdrwidth; /* Window border width */
- X } X11WDFileHeader;
- X
- Xtypedef struct {
- X unsigned long pixel;
- X unsigned short red, green, blue;
- X char flags; /* do_red, do_green, do_blue */
- X char pad;
- X } X11XColor;
- SHAR_EOF
- if test 1692 -ne "`wc -c < 'x11wd.h'`"
- then
- echo shar: error transmitting "'x11wd.h'" '(should have been 1692 characters)'
- fi
- fi # end of overwriting check
- echo shar: extracting "'pbm.5'" '(2500 characters)'
- if test -f 'pbm.5'
- then
- echo shar: will not over-write existing file "'pbm.5'"
- else
- sed 's/^X//' << \SHAR_EOF > 'pbm.5'
- X.TH pbm 5 "31 August 1988"
- X.SH NAME
- Xpbm - portable bitmap file format
- X.SH DESCRIPTION
- XThe portable bitmap format is a lowest common denominator.
- XIt was originally designed to make it reasonable to mail bitmaps
- Xbetween different types of machines using the typical stupid network
- Xmailers we have today.
- XNow it serves as the common language of a large family of bitmap
- Xconversion filters.
- XThe definition is as follows:
- X.IP - 2
- XA "magic number" for identifying the file type.
- XA pbm file's magic number is the two characters "P1".
- X.IP - 2
- XWhitespace (blanks, TABs, CRs, LFs).
- X.IP - 2
- XA width, formatted as ASCII characters in decimal.
- X.IP - 2
- XWhitespace.
- X.IP - 2
- XA height, again in ASCII decimal.
- X.IP - 2
- XWhitespace.
- X.IP - 2
- XWidth * height bits, each either '1' or '0', starting at the top-left
- Xcorner of the bitmap, proceding in normal English reading order.
- X.IP - 2
- XThe character '1' means black, '0' means white.
- X.IP - 2
- XWhitespace in the bits section is ignored.
- X.IP - 2
- XCharacters from a "#" to the next end-of-line are ignored (comments).
- X.IP - 2
- XNo line may be longer than 70 characters.
- X.PP
- XHere is an example of a small bitmap in this format:
- X.PP
- X.nf
- XP1
- X# feep.pbm
- X24 7
- X0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
- X0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0
- X0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0
- X0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0
- X0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0
- X0 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0
- X0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
- X.fi
- X.PP
- XPrograms that read this format should be as lenient as possible,
- Xaccepting anything that looks remotely like a bitmap.
- X.SH "SEE ALSO"
- Xbrushtopbm(1), cbmtopbm(1), giftopbm(1), icontopbm(1), macptopbm(1),
- Xpbmcatlr(1), pbmcattb(1), pbmcrop(1), pbmcut(1), pbmenlarge(1),
- Xpbmfliplr(1), pbmfliptb(1), pbminvert(1), pbmmake(1), pbmpaste(1),
- Xpbmtoascii(1), pbmtocbm(1), pbmtoicon(1), pbmtolj(1), pbmtomacp(1),
- Xpbmtops(1), pbmtoptx(1), pbmtorast(1), pbmtox10bm(1), pbmtox10wd(1),
- Xpbmtoxbm(1), pbmtoxwd(1), pbmtrnspos(1), rasttopbm(1),
- Xxbmtopbm(1), xwdtopbm(1), xxxtopbm(1)
- X.SH AUTHOR
- XCopyright (C) 1988 by Jef Poskanzer.
- X
- XPermission to use, copy, modify, and distribute this software and its
- Xdocumentation for any purpose and without fee is hereby granted, provided
- Xthat the above copyright notice appear in all copies and that both that
- Xcopyright notice and this permission notice appear in supporting
- Xdocumentation. This software is provided "as is" without express or
- Ximplied warranty.
- SHAR_EOF
- if test 2500 -ne "`wc -c < 'pbm.5'`"
- then
- echo shar: error transmitting "'pbm.5'" '(should have been 2500 characters)'
- fi
- fi # end of overwriting check
- echo shar: extracting "'bmaliases'" '(386 characters)'
- if test -f 'bmaliases'
- then
- echo shar: will not over-write existing file "'bmaliases'"
- else
- sed 's/^X//' << \SHAR_EOF > 'bmaliases'
- X# This script must be sourced - it will not work if you run it in a sub-shell.
- X
- Xset _to_only="ascii lj ps ptx x10bm x10wd"
- Xset _from_only="brush gif xxx"
- Xset _both="cbm icon macp rast xbm xwd"
- X
- Xforeach i ( $_both $_from_only )
- X foreach j ( $_both $_to_only )
- X if ( $i != $j ) then
- X alias ${i}to${j} "( ${i}topbm | pbmto${j} )"
- X endif
- X end
- Xend
- X
- Xunset _to_only _from_only _both
- SHAR_EOF
- if test 386 -ne "`wc -c < 'bmaliases'`"
- then
- echo shar: error transmitting "'bmaliases'" '(should have been 386 characters)'
- fi
- fi # end of overwriting check
- echo shar: extracting "'bitreverse.h'" '(1992 characters)'
- if test -f 'bitreverse.h'
- then
- echo shar: will not over-write existing file "'bitreverse.h'"
- else
- sed 's/^X//' << \SHAR_EOF > 'bitreverse.h'
- X/*
- X** bitreverse.h
- X**
- X** This particular array seems to be useful in a lot of bitmap
- X** conversion programs. It's not used in pbm because bits are
- X** stored one per byte, for easier manipulation. But if you wanted
- X** to write, for example, a program to directly convert Sun raster
- X** format into X bitmaps, you could use this.
- X*/
- X
- Xunsigned char bitreverse[256] = {
- X 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 0x10, 0x90, 0x50, 0xd0,
- X 0x30, 0xb0, 0x70, 0xf0, 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
- X 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, 0x04, 0x84, 0x44, 0xc4,
- X 0x24, 0xa4, 0x64, 0xe4, 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
- X 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 0x1c, 0x9c, 0x5c, 0xdc,
- X 0x3c, 0xbc, 0x7c, 0xfc, 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
- X 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, 0x0a, 0x8a, 0x4a, 0xca,
- X 0x2a, 0xaa, 0x6a, 0xea, 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
- X 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, 0x16, 0x96, 0x56, 0xd6,
- X 0x36, 0xb6, 0x76, 0xf6, 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
- X 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 0x01, 0x81, 0x41, 0xc1,
- X 0x21, 0xa1, 0x61, 0xe1, 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
- X 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, 0x19, 0x99, 0x59, 0xd9,
- X 0x39, 0xb9, 0x79, 0xf9, 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
- X 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 0x0d, 0x8d, 0x4d, 0xcd,
- X 0x2d, 0xad, 0x6d, 0xed, 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
- X 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, 0x13, 0x93, 0x53, 0xd3,
- X 0x33, 0xb3, 0x73, 0xf3, 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
- X 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, 0x07, 0x87, 0x47, 0xc7,
- X 0x27, 0xa7, 0x67, 0xe7, 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
- X 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 0x1f, 0x9f, 0x5f, 0xdf,
- X 0x3f, 0xbf, 0x7f, 0xff};
- SHAR_EOF
- if test 1992 -ne "`wc -c < 'bitreverse.h'`"
- then
- echo shar: error transmitting "'bitreverse.h'" '(should have been 1992 characters)'
- fi
- fi # end of overwriting check
- # End of shell archive
- exit 0
-